using namespace std;

#include "Metadata.h"

Metadata::Metadata(char c, int i) {
	this->tipo = c;
	this->tamanio = i;
	this->cantidadDatos = 0;
}

Metadata::Metadata(char c, int i, int cant, list<string>& l, list<bool> lb) {
	this->tipo = c;
	this->tamanio = i;
	this->datos = l;
	this->datosClaves = lb;
	this->cantidadDatos = cant;
}

char Metadata::getTipo() {
	return tipo;
}

int Metadata::getTamanio() {
	return tamanio;
}

list<string>& Metadata::getTipoDatos() const {
	return const_cast<list<string>& >(datos);
}

list<bool>& Metadata::getTipoDatosClaves() const {
	return const_cast<list<bool>& >(datosClaves);
}

void Metadata::agregarTipoDato(string dato, bool clave) {
	datos.push_back(dato);
	datosClaves.push_back(clave);
	cantidadDatos++;
}

int Metadata::getcantidadDatos() {
	return cantidadDatos;
}

void Metadata::imprimir() {
	cout << "Imprimiento Metadata:" << endl;
	cout << "Tipo: " << tipo << endl;
	cout << "Tamanio: " << tamanio << endl;
	cout << "Cantidad de Datos: " << cantidadDatos << endl;
	list<string>::const_iterator it2 = datos.begin();
	list<bool>::const_iterator it = datosClaves.begin();
	cout<< "Datos: "<<endl;
	for (int i = 0; i < cantidadDatos; i++) {
		cout << "\tDato[" << i << "]:"<<endl;
		cout << "\t\tClave: "<< boolalpha << (*it) << noboolalpha << endl;//clave
		cout << "\t\tTipo: "<<(*it2) << endl;//string dato
		it++;
		it2++;
	}
}

